// This file was decompiled using SASCM.ini published by GTAG (http://gtag.gtagaming.com/opcode-database) on 14.6.2013
{$CLEO .cs}

//-------------MAIN---------------
thread "PROGA" 

:PROGA_9
wait 0 
if 
0AAB:   file_exists "CLEO\KEYS.INI" 
jf @PROGA_EC 
if and
0AF0: 19@ = get_int_from_ini_file "CLEO\KEYS.INI" section "ROCKET_FIRE" key "FIRE_KEY" 
0AF0: 20@ = get_int_from_ini_file "CLEO\KEYS.INI" section "CANNON_FIRE" key "FIRE_KEY" 
jf @PROGA_98 
jump @PROGA_108 
jump @PROGA_EC 

:PROGA_98
0AF1: write_int 54 to_ini_file "CLEO\KEYS.INI" section "ROCKET_FIRE" key "FIRE_KEY" 
0AF1: write_int 55 to_ini_file "CLEO\KEYS.INI" section "CANNON_FIRE" key "FIRE_KEY" 

:PROGA_EC
if 
0AAB:   file_exists "CLEO\KEYS.INI" 
jf @PROGA_9 

:PROGA_108
Model.Load(-244)
038B: load_requested_models 

:PROGA_10F
wait 0 
if 
   Model.Available(-244)
jf @PROGA_10F 
15@ = 15 

:PROGA_12A
wait 0 
if 
   Actor.Driving($PLAYER_ACTOR)
jf @PROGA_352 
0@ = Actor.CurrentCar($PLAYER_ACTOR)
26@ = Car.Model(0@)
if 
047A:   actor $PLAYER_ACTOR driving_bike 
jf @PROGA_179 
13@ = 0.7 
14@ = 0.9 
jump @PROGA_18D 

:PROGA_179
13@ = 2.2 
14@ = 2.4 

:PROGA_18D
07E4: get_model 26@ dimensions_cornerA_to 25@ 23@ 22@ dimensions_cornerB_to 24@ 23@ 22@ 
005B: 25@ += 13@ // (float) 
0407: store_coords_to 16@ 17@ 6@ from_car 0@ with_offset 0.0 -0.7 0.1 
27@ = Object.Create(-244, 16@, 17@, 6@)
08D2: object 27@ scale_model 1.0 
0681: attach_object 27@ to_car 0@ with_offset 25@ 0.2 0.0 rotation 90.0 0.0 90.0 
0063: 24@ -= 13@ // (float) 
0407: store_coords_to 16@ 17@ 6@ from_car 0@ with_offset 0.0 -0.7 0.1 
28@ = Object.Create(-244, 16@, 17@, 6@)
08D2: object 28@ scale_model 1.0 
0681: attach_object 28@ to_car 0@ with_offset 24@ 0.2 0.0 rotation 270.0 0.0 90.0 
07E4: get_model 26@ dimensions_cornerA_to 25@ 23@ 22@ dimensions_cornerB_to 24@ 23@ 22@ 
005B: 25@ += 14@ // (float) 
0407: store_coords_to 16@ 17@ 6@ from_car 0@ with_offset 0.0 -0.5 0.1 
29@ = Object.Create(#HEATSEEK, 16@, 17@, 6@)
08D2: object 29@ scale_model 1.0 
0681: attach_object 29@ to_car 0@ with_offset 25@ 0.2 0.0 rotation 90.0 0.0 90.0 
0063: 24@ -= 14@ // (float) 
0407: store_coords_to 16@ 17@ 6@ from_car 0@ with_offset 0.0 -0.5 0.1 
30@ = Object.Create(#HEATSEEK, 16@, 17@, 6@)
08D2: object 30@ scale_model 1.0 
0681: attach_object 30@ to_car 0@ with_offset 24@ 0.2 0.0 rotation 270.0 0.0 90.0 
jump @PROGA_359 

:PROGA_352
jump @PROGA_12A 

:PROGA_359
wait 0 
if 
   Player.Defined($PLAYER_CHAR)
jf @PROGA_359 
if 
   Actor.Driving($PLAYER_ACTOR)
jf @PROGA_402 
0@ = Actor.CurrentCar($PLAYER_ACTOR)
0AB1: call_scm_func @PROGA_8EE 0  
0AB1: call_scm_func @PROGA_B0C 0  
if 
00E1:   player 0 pressed_key 17 
jf @PROGA_3D1 
0AB1: call_scm_func @PROGA_50A 2 0@ 0@  
0AB1: call_scm_func @PROGA_6FC 2 0@ 0@  
jump @PROGA_402 

:PROGA_3D1
if 
00E1:   player 0 pressed_key 7 
jf @PROGA_402 
0AB1: call_scm_func @PROGA_409 2 0@ 0@  
097B: play_audio_at_object 27@ event 1157 
097B: play_audio_at_object 28@ event 1157 

:PROGA_402
0AB4: 21@ < 246
    IF 21@ == TRUE
    THEN
        Object.Destroy(27@)
        Object.Destroy(28@)
        Object.Destroy(29@)
        Object.Destroy(30@)
        END_THREAD
    END               


jump @PROGA_359 

:PROGA_409
0407: store_coords_to 1@ 2@ 3@ from_car 0@ with_offset 1.7 0.8 -0.0 
0208: 14@ = random_float_in_ranges -1.6 1.6 
0208: 13@ = random_float_in_ranges -1.6 1.6 
0407: store_coords_to 5@ 6@ 7@ from_car 0@ with_offset 14@ 200.4 13@ 
06BC: create_M4_shoot_from 1@ 2@ 3@ target 5@ 6@ 7@ energy 50 
058A: create_gun_flash_from 1@ 2@ 3@ to 5@ 6@ 7@ 
0407: store_coords_to 1@ 2@ 3@ from_car 0@ with_offset -1.7 0.8 -0.0 
0208: 14@ = random_float_in_ranges -1.6 1.6 
0208: 13@ = random_float_in_ranges -1.6 1.6 
0407: store_coords_to 5@ 6@ 7@ from_car 0@ with_offset 14@ 200.4 13@ 
06BC: create_M4_shoot_from 1@ 2@ 3@ target 5@ 6@ 7@ energy 50 
058A: create_gun_flash_from 1@ 2@ 3@ to 5@ 6@ 7@ 
0AB2: ret 0 

:PROGA_50A
15@ = 0 
14@ = -1.6 
3@ = 0 

:PROGA_522
wait 0 
0085: 2@ = 3@ // (int) 
2@ *= 4 
0AC6: 1@ = label @PROGA_D2A offset 
005A: 1@ += 2@ // (int) 
0A8D: 5@ = read_memory 1@ size 4 virtual_protect 0 
if 
  5@ == 0 
jf @PROGA_6E1 
0407: store_coords_to 16@ 17@ 6@ from_car 0@ with_offset 14@ 1.4 0.3 
4@ = Object.Create(1598, 16@, 17@, 6@)
0750: set_object 4@ visibility 1 
08D2: object 4@ scale_model 0.3 
04D9: object 4@ set_scripted_collision_check 1 
Object.CollisionDetection(4@) = True
0906: set_object 4@ mass_to 30000.0 // float 
0908: set_object 4@ turn_mass_to 30000.0 // float 
7@ = Object.Create(#MISSILE, 16@, 17@, 6@)
069A: attach_object 7@ to_object 4@ with_offset 0.0 0.0 0.0 rotation 0.0 0.0 180.0 
Object.CollisionDetection(7@) = False
097B: play_audio_at_object 4@ event 1157 
if 
03CA:   object 7@ exists 
jf @PROGA_62A 
8@ = Actor.Angle($PLAYER_ACTOR)
Object.Angle(7@) = 8@

:PROGA_62A
02F6: 11@ = sine 8@ // (float) 
02F7: 12@ = cosine 8@ // (float) 
12@ *= 90.0 
11@ *= 90.0 
11@ *= -1.0 
Object.ToggleInMovingList(4@) = True
24@ += 0.3 
Object.Throw(4@, 11@, 12@, 24@)
33@ = 0 
0AC6: 1@ = label @PROGA_D2A offset 
005A: 1@ += 2@ // (int) 
0A8C: write_memory 1@ size 4 value 1 virtual_protect 0 
0AC6: 1@ = label @PROGA_DA2 offset 
005A: 1@ += 2@ // (int) 
0A8C: write_memory 1@ size 4 value 4@ virtual_protect 0 
0AC6: 1@ = label @PROGA_E1A offset 
005A: 1@ += 2@ // (int) 
0A8C: write_memory 1@ size 4 value 7@ virtual_protect 0 
14@ -= 0.4 

:PROGA_6E1
3@ += 1 
001D:   3@ > 15@ // (int) 
jf @PROGA_522 
0AB2: ret 0 

:PROGA_6FC
15@ = 0 
14@ = 1.6 
3@ = 0 

:PROGA_714
wait 0 
0085: 2@ = 3@ // (int) 
2@ *= 4 
0AC6: 1@ = label @PROGA_E92 offset 
005A: 1@ += 2@ // (int) 
0A8D: 5@ = read_memory 1@ size 4 virtual_protect 0 
if 
  5@ == 0 
jf @PROGA_8D3 
0407: store_coords_to 16@ 17@ 6@ from_car 0@ with_offset 14@ 1.4 0.3 
4@ = Object.Create(1598, 16@, 17@, 6@)
0750: set_object 4@ visibility 1 
08D2: object 4@ scale_model 0.3 
04D9: object 4@ set_scripted_collision_check 1 
Object.CollisionDetection(4@) = True
0906: set_object 4@ mass_to 30000.0 // float 
0908: set_object 4@ turn_mass_to 30000.0 // float 
7@ = Object.Create(#MISSILE, 16@, 17@, 6@)
069A: attach_object 7@ to_object 4@ with_offset 0.0 0.0 0.0 rotation 0.0 0.0 180.0 
Object.CollisionDetection(7@) = False
097B: play_audio_at_object 4@ event 1157 
if 
03CA:   object 7@ exists 
jf @PROGA_81C 
8@ = Actor.Angle($PLAYER_ACTOR)
Object.Angle(7@) = 8@

:PROGA_81C
02F6: 11@ = sine 8@ // (float) 
02F7: 12@ = cosine 8@ // (float) 
12@ *= 90.0 
11@ *= 90.0 
11@ *= -1.0 
Object.ToggleInMovingList(4@) = True
24@ += 0.3 
Object.Throw(4@, 11@, 12@, 24@)
33@ = 0 
0AC6: 1@ = label @PROGA_E92 offset 
005A: 1@ += 2@ // (int) 
0A8C: write_memory 1@ size 4 value 1 virtual_protect 0 
0AC6: 1@ = label @PROGA_F0A offset 
005A: 1@ += 2@ // (int) 
0A8C: write_memory 1@ size 4 value 4@ virtual_protect 0 
0AC6: 1@ = label @PROGA_F82 offset 
005A: 1@ += 2@ // (int) 
0A8C: write_memory 1@ size 4 value 7@ virtual_protect 0 
14@ += 0.4 

:PROGA_8D3
3@ += 1 
001D:   3@ > 15@ // (int) 
jf @PROGA_714 
0AB2: ret 0 

:PROGA_8EE
15@ = 0 
3@ = 0 

:PROGA_8FC
0085: 2@ = 3@ // (int) 
2@ *= 4 
0AC6: 1@ = label @PROGA_D2A offset 
005A: 1@ += 2@ // (int) 
0A8D: 5@ = read_memory 1@ size 4 virtual_protect 0 
if 
  5@ == 1 
jf @PROGA_AF1 
0AC6: 1@ = label @PROGA_DA2 offset 
005A: 1@ += 2@ // (int) 
0A8D: 4@ = read_memory 1@ size 4 virtual_protect 0 
if 
  4@ > 0 
jf @PROGA_AF1 
0AC6: 1@ = label @PROGA_E1A offset 
005A: 1@ += 2@ // (int) 
0A8D: 7@ = read_memory 1@ size 4 virtual_protect 0 
if 
  7@ > 0 
jf @PROGA_AF1 
if 
03CA:   object 4@ exists 
jf @PROGA_A50 
if 
03CA:   object 7@ exists 
jf @PROGA_9CB 
8@ = Actor.Angle($PLAYER_ACTOR)
Object.Angle(7@) = 8@

:PROGA_9CB
02F6: 11@ = sine 8@ // (float) 
02F7: 12@ = cosine 8@ // (float) 
12@ *= 90.0 
11@ *= 90.0 
11@ *= -1.0 
Object.ToggleInMovingList(4@) = True
24@ += 0.3 
Object.Throw(4@, 11@, 12@, 24@)
095C: create_smoke_at 11@ 12@ 24@ velocity 0.0 0.0 0.0 RGBA 1.0 0.0 0.0 1.0 size 1.9 last_factor 0.0 

:PROGA_A50
if and
03CA:   object 4@ exists 
03CA:   object 7@ exists 
jf @PROGA_AF1 
if or
04DA:   has_object 4@ collided 
04E7:   object 4@ in_water 
86BD:   not no_obstacles_between 11@ 12@ 24@ and 11@ 12@ 24@ solid 1 car 1 actor 0 object 1 particle 0 
  33@ > 7000 
jf @PROGA_AF1 
0400: store_coords_to 16@ 17@ 6@ from_object 4@ with_offset 0.0 0.0 0.0 
020C: create_explosion_with_radius 3 at 16@ 17@ 6@ 
Object.Destroy(4@)
Object.Destroy(7@)
0AC6: 1@ = label @PROGA_D2A offset 
005A: 1@ += 2@ // (int) 
0A8C: write_memory 1@ size 4 value 0 virtual_protect 0 

:PROGA_AF1
3@ += 1 
001D:   3@ > 15@ // (int) 
jf @PROGA_8FC 
0AB2: ret 0 

:PROGA_B0C
15@ = 0 
3@ = 0 

:PROGA_B1A
0085: 2@ = 3@ // (int) 
2@ *= 4 
0AC6: 1@ = label @PROGA_E92 offset 
005A: 1@ += 2@ // (int) 
0A8D: 5@ = read_memory 1@ size 4 virtual_protect 0 
if 
  5@ == 1 
jf @PROGA_D0F 
0AC6: 1@ = label @PROGA_F0A offset 
005A: 1@ += 2@ // (int) 
0A8D: 4@ = read_memory 1@ size 4 virtual_protect 0 
if 
  4@ > 0 
jf @PROGA_D0F 
0AC6: 1@ = label @PROGA_F82 offset 
005A: 1@ += 2@ // (int) 
0A8D: 7@ = read_memory 1@ size 4 virtual_protect 0 
if 
  7@ > 0 
jf @PROGA_D0F 
if 
03CA:   object 4@ exists 
jf @PROGA_C6E 
if 
03CA:   object 7@ exists 
jf @PROGA_BE9 
8@ = Actor.Angle($PLAYER_ACTOR)
Object.Angle(7@) = 8@

:PROGA_BE9
02F6: 11@ = sine 8@ // (float) 
02F7: 12@ = cosine 8@ // (float) 
12@ *= 90.0 
11@ *= 90.0 
11@ *= -1.0 
Object.ToggleInMovingList(4@) = True
24@ += 0.3 
Object.Throw(4@, 11@, 12@, 24@)
095C: create_smoke_at 11@ 12@ 24@ velocity 0.0 0.0 0.0 RGBA 1.0 0.0 0.0 1.0 size 0.9 last_factor 0.0 

:PROGA_C6E
if and
03CA:   object 4@ exists 
03CA:   object 7@ exists 
jf @PROGA_D0F 
if or
04DA:   has_object 4@ collided 
04E7:   object 4@ in_water 
86BD:   not no_obstacles_between 11@ 12@ 24@ and 11@ 12@ 24@ solid 1 car 1 actor 0 object 1 particle 0 
  33@ > 7000 
jf @PROGA_D0F 
0400: store_coords_to 16@ 17@ 6@ from_object 4@ with_offset 0.0 0.0 0.0 
020C: create_explosion_with_radius 3 at 16@ 17@ 6@ 
Object.Destroy(4@)
Object.Destroy(7@)
0AC6: 1@ = label @PROGA_E92 offset 
005A: 1@ += 2@ // (int) 
0A8C: write_memory 1@ size 4 value 0 virtual_protect 0 

:PROGA_D0F
3@ += 1 
001D:   3@ > 15@ // (int) 
jf @PROGA_B1A 
0AB2: ret 0 

:PROGA_D2A
hex
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00
end

:PROGA_DA2
hex
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00
end

:PROGA_E1A
hex
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00
end

:PROGA_E92
hex
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00
end

:PROGA_F0A
hex
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00
end

:PROGA_F82
hex
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00
end
